home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stik_dev / forecast / disk.c < prev    next >
C/C++ Source or Header  |  1995-12-31  |  3KB  |  132 lines

  1. /**************************************************************/
  2. /*                      Disk.C v.05                              */
  3. /*                                                              */
  4. /*      Simple Disk routines                                      */
  5. /**************************************************************/
  6.  
  7. #include <osbind.h>
  8. #include <string.h>
  9. #include <stdio.h>
  10. #include "disk.i"
  11.  
  12. extern char city_tla[3];
  13.  
  14. /**************************************************************/
  15. /*   my_Fwrite - avoids sending 0 length to Fwrite              */
  16. /*                This avoids crashes on TOS 1.0 & 1.2          */
  17. /**************************************************************/
  18. void 
  19. my_Fwrite(int file_handle, int file_length, char *string)
  20. {
  21.     if (file_length > 0)
  22.         {
  23.             Fwrite(file_handle,(long)file_length,string);
  24.         }
  25. }
  26.  
  27. /***************************************************************/
  28. /*                                                               */
  29. /*                    File IO section                               */
  30. /*                                                             */
  31. /***************************************************************/
  32.  
  33. long
  34. create_file(char *file_to_make)
  35. {
  36.     char message[64];
  37.     long cr_ret;    
  38.  
  39.     cr_ret = Fcreate(file_to_make,0x0);
  40.  
  41.     if (cr_ret > 0)
  42.     {
  43.         Fclose((int)cr_ret);
  44.     }
  45.     else
  46.     {
  47.         strcpy(message, "[1][");
  48.         strcat(message, "Can't create file.");
  49.         strcat(message, " ][  OK  ]");
  50.         
  51.         form_alert(1, message);
  52.     }        
  53.  
  54.     return cr_ret;
  55. }
  56.  
  57. long
  58. write_prefs_file(char *file_to_make)
  59. {
  60.     long cr_ret;    
  61.     char file_buffer[128];
  62.     char file_buffer2[128];
  63.     
  64.     cr_ret = Fopen(file_to_make,1);
  65.  
  66.     if (cr_ret > 0)
  67.     {
  68.         sprintf(file_buffer,"%s",city_tla);
  69.         sprintf(file_buffer2,"%02d",(int)strlen(file_buffer));
  70.         Fwrite((int)cr_ret,strlen(file_buffer2),file_buffer2);
  71.         Fwrite((int)cr_ret,1,"\n");
  72.         my_Fwrite((int)cr_ret,(int)strlen(file_buffer),file_buffer);
  73.         Fwrite((int)cr_ret,1,"\n");
  74.  
  75.         Fclose((int)cr_ret);
  76.     }
  77.  
  78.     return cr_ret;
  79. }
  80.  
  81. long
  82. read_prefs_file(char *file_to_make)
  83. {
  84.     long cr_ret;    
  85.     int header_length;
  86.     char file_buffer[300];
  87.     char header_buffer[2];
  88.  
  89.     cr_ret = Fopen(file_to_make,0);
  90.  
  91.     if (cr_ret > 0)
  92.     {
  93.         Fread((int)cr_ret,2,&header_buffer);
  94.         stcd_i(header_buffer,&header_length);
  95.         Fread((int)cr_ret,1,&file_buffer);
  96.         Fread((int)cr_ret,(long)header_length,&city_tla);
  97.         Fread((int)cr_ret,1,&file_buffer);
  98.     
  99.         Fclose((int)cr_ret);
  100.     }
  101.     else
  102.     {
  103.         /* create it */
  104.     
  105.         create_file(file_to_make);
  106.         write_prefs_file(file_to_make);
  107.     }
  108.  
  109.     return cr_ret;
  110. }
  111.  
  112. /*
  113.  * construct_path - build a GEMDOS path name out of a stem, which
  114.  * optionally has junk on the end which we must delete, and a filename
  115.  * which we are interested in.
  116. */
  117.  
  118. void
  119. construct_path(char *dest,const char *path,const char *name)
  120. {
  121.     char *s=NULL;        /* used to track the position after final \ or : */
  122.  
  123.     if (path[0] && path[1]==':')
  124.         s=&dest[2];
  125.     while (*dest++=*path)
  126.         if (*path++=='\\')
  127.             s=dest;
  128.     if (!s)
  129.         s=dest;
  130.     strcpy(s,name);
  131. }
  132.